Today's business applications are based on collaboration and a division of labor. The assignment of specific tasks to certain executable and reusable software components enables the creation of business applications through the composition of software components. A software component itself may be composed of sub-components or may be made of units of work that keep track of the context and take into account relationships, data, and rule-based constraints.
The set of functionality offered by an application is often not static and may depend on the capabilities offered by the set of systems that is available in a given system landscape. For example, business intelligence (BI) functionality may only be offered by an application if a BI system is available in the system landscape.